package leak

/**
如果我们使用了无缓存的channel，那么两个慢的goroutines将会因为没有人接收而被永远卡住。
这种情况，称为goroutines泄漏，这将是一个BUG。
和垃圾变量不同，泄漏的goroutines并不会被自动回收，因此确保每个不再需要的goroutine能正常退出是重要的。
*/
func mirroredQuery() string {
	ch := make(chan string, 3)
	go func() {
		ch <- request("www.baidu.com")
	}()
	go func() {
		ch <- request("www.goggle.com")
	}()
	go func() {
		ch <- request("www.alibaba.com")
	}()
	return <-ch
}

func request(hostname string) (response string) {
	//time.Sleep(rand.Int() *time.Second)
	return "haha"
}
